The continuous expansion of the Internet, along with the expansion and sophistication of computing networks and systems, has led to the proliferation of content being stored and accessible over the Internet. This in turn has driven the need for large and sophisticated data storage systems. As the demand for data storage continues to increase, larger and more sophisticated storage systems are being designed and deployed. Many large scale data storage systems utilize storage appliances that include arrays of physical storage media. These storage appliances are capable of storing incredible amounts of data. For example, at this time, Oracle's SUN ZFS Storage ZS5-4 appliance can store up to 6.9 petabytes of data. Moreover, multiple storage appliances may be networked together to form a storage pool, which can further increase the volume of stored data.
Typically, large storage systems such as these may include a file system for storing and accessing files. In addition to storing system files (operating system files, device driver files, etc.), the file system provides storage and access of user data files. If any of these files (system files and/or user files) contain critical data, then it becomes advantageous to employ a data backup scheme to ensure that critical data is not lost if a file storage device fails. One data backup scheme that is commonly employed is mirroring. Mirroring involves maintaining two or more copies of a file, where each copy of the file is located on a separate file storage device (e.g., a local hard disk, a networked hard disk, a network file server, etc.). For example, storage appliances arranged in a cluster may be configured to mirror data so that if one of the storage appliances becomes inoperable, the data is available at another storage location.
When one or more file storage devices fails for any length of time, the file storage device(s) may become unsynchronized. However, when employing a mirroring scheme, the mirrors should be synchronized (i.e., the contents of each mirror are the same) to ensure critical data is backed up. If a mirror becomes unsynchronized the simplest recovery scheme involves copying all of the data from a synchronized mirror to the unsynchronized mirror. However, copying all data from one file storage device to another file storage device may take a considerable amount of time and may reduce performance of the collective file storage devices significantly during the resynchronization process.